package BUSSINES_LAYER;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import DAOS.tbl_AbonoDAO;
import DAOS.tbl_Causa_no_lecturaDAO;
import DAOS.tbl_EmpleadoDAO;
import DAOS.tbl_EstratoDAO;
import DAOS.tbl_FacturaDAO;
import DAOS.tbl_FinanciacionA_DAO;
import DAOS.tbl_FinanciacionB_DAO;
import DAOS.tbl_Perfil_usuarioDAO;
import DAOS.tbl_Reconexion_otrosDAO;
import DAOS.tbl_SubsidioDAO;
import DAOS.tbl_Tarifa_acueductoDAO;
import DAOS.tbl_Tarifa_alcantarilladoDAO;
import DAOS.tbl_UsuarioDAO;
import ENTITIES.tbl_Abono;
import ENTITIES.tbl_Causa_no_lectura;
import ENTITIES.tbl_Empleado;
import ENTITIES.tbl_Estrato;
import ENTITIES.tbl_Factura;
import ENTITIES.tbl_Financiacion_A;
import ENTITIES.tbl_Financiacion_B;
import ENTITIES.tbl_Perfil_usuario;
import ENTITIES.tbl_Reconexion_otros;
import ENTITIES.tbl_Subsidio;
import ENTITIES.tbl_Tarifa_acueducto;
import ENTITIES.tbl_Tarifa_alcantarillado;
import ENTITIES.tbl_Usuario;

/**
 * Session Bean implementation class ManagerEjb
 * 
 * DESARROLLADO POR:	MARIA ALEJANDRA PEREZ SALAZAR
 * 					 	STEVEN SALCEDO
 * 						YULIANA MARIA SAAVEDRA
 * 					
 * 
 * INGENIEROS DE SISTEMAS Y COMPUTACION 
 */
@Stateless
@LocalBean
public class ManagerEjb implements ManagerRemote {

	@EJB
	public tbl_UsuarioDAO usuario;
	@EJB
	public tbl_FinanciacionA_DAO financiacion_A;
	@EJB
	public tbl_FinanciacionB_DAO financiacion_B;
	@EJB
	public tbl_AbonoDAO abonos;
	@EJB
	public tbl_EmpleadoDAO empleado;
	@EJB
	public tbl_FacturaDAO factura;
	@EJB
	public tbl_Reconexion_otrosDAO reconexion;
	@EJB
	public tbl_Perfil_usuarioDAO perfil;
	@EJB
	public tbl_Tarifa_acueductoDAO tarifa_acueducto;
	@EJB
	public tbl_Tarifa_alcantarilladoDAO tarifa_alcantarillado;
	@EJB
	public tbl_SubsidioDAO subsidio;
	@EJB
	public tbl_EstratoDAO estrato;
	@EJB
	public tbl_Causa_no_lecturaDAO causa_no_lectura;

	/**
	 * Default constructor.
	 */
	public ManagerEjb() {

	}

	/**
	 * 
	 * USUARIOS: INSERT,UPDATE,DELET,SELECT
	 * 
	 */
	@Override
	public boolean insertUsuario(tbl_Usuario usuario) {
		if (this.usuario.existUsuario(usuario.getMatricula())) {
			return false;
		} else {
			this.usuario.insert(usuario);
			return true;
		}

	}

	@Override
	public boolean upDateUsuario(tbl_Usuario usuario) {
		if (this.usuario.existUsuario(usuario.getMatricula())) {
			return false;
		} else {
			this.usuario.update(usuario);
			return true;
		}

	}

	@Override
	public boolean deleteUsuario(long matricula) {
		tbl_Usuario usuario = this.usuario.findByKey(matricula);
		if (usuario == null) {
			return false;
		}
		this.usuario.remove(usuario);
		//deleteReconexion(usuario.getReconexion().get(0).getIdReconexionOtros());
		//deleteFactura(usuario.getFactura().get(0).getNro_fact());
		return true;
	}

	@Override
	public tbl_Usuario selectUsuario(long cedula) {
		return usuario.findByKey(cedula);

	}

	@Override
	public List<tbl_Usuario> selectAllUsuarios() {
		List<tbl_Usuario> usuarios = new ArrayList<tbl_Usuario>();
		List<Long> matricula = this.usuario.getAllUsuarios();
		for (int i = 0; i < matricula.size(); i++) {
			tbl_Usuario usuario = this.usuario.findByKey(matricula.get(i));
			usuarios.add(usuario);
		}
		return usuarios;

	}

	/**
	 * 
	 * FINANCIACION A: INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertFinanciacion_A(tbl_Financiacion_A fa) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateFinanciacion_A(tbl_Financiacion_A fa) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteFinanciacion_A(long idFinanciacionA) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectAllFinanciaciones_A() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean selectFinanciacion_A(long idFinanciacionA) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * 
	 * FINANCIACION B: INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertFinanciacion_B(tbl_Financiacion_B fb) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateFinanciacion_B(tbl_Financiacion_B fb) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteFinanciacion_B(long idFinanciacionB) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean selectFinanciacion_B(long idFinanciacionB) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectAllFinanciaciones_B() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * 
	 * ABONOS: INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertAbono(tbl_Abono abonos, long idFactura) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateAbono(tbl_Abono abono) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteAbono(long idAbono) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectAbonos() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean selectAbono(long idAbono) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * 
	 * EMPLEADOS: INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertEmpleado(tbl_Empleado empleado) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateEmpleado(tbl_Empleado empleado) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteEmpleado(long cedula) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectEmpleados() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean selectEmpleado(long cedula) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * 
	 * FACTURAS: INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertFactura(tbl_Factura factura) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateFactura(tbl_Factura factura) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteFactura(long nro_fact) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectAllFacturas() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean selectFactura(long nro_fact) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * 
	 * RECONEXIONES: INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertReconexion(tbl_Reconexion_otros reconexion_otros) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateReconexion(tbl_Reconexion_otros reconexion_otros) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteReconexion(long idReconexionOtros) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectAllReconexiones() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean selectReconexion(long idReconexionOtros) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * 
	 * LOGEO DE USUARIOS DEL SISTEMA:
	 * 
	 */

	@Override
	public long getCheckLogin(String login, String contrasena) {
		// TODO Auto-generated method stub
		return 0;
	}

	/**
	 * 
	 * PERFIL DE USUARIO:INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertPerdilUsuario(tbl_Perfil_usuario perfil) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDatePerfilUsuario(tbl_Perfil_usuario perfil) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deletePerfilUsuario(long idPerfilUsuario) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectAllPerfilUsuarios() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * 
	 * TARIFA DE ACUEDUCTO:INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertTarifaAcueducto(tbl_Tarifa_acueducto tarifa_acueducto) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateTarifaAcueducto(tbl_Tarifa_acueducto tarifa_acueducto) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteTarifaAcueducto(long idTarifaAcueducto) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean selectTarifaAcueducto(long idTarifaAcueducto) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * 
	 * TARIFA DE ALCANTARILLADO:INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertTarifaAlcantarillado(
			tbl_Tarifa_alcantarillado tarifa_alcantarillado) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateTarifaAlcantarillado(
			tbl_Tarifa_alcantarillado tarifa_alcantarillado) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteTarifaAlcantarillado(long idTarifaAlcantarillado) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean selectTarifaAlcantarillado(long idTarifaAlcantarillado) {
		// TODO Auto-generated method stub
		return false;
	}

	/**
	 * 
	 * SUBSIDIOS:INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertSubsidio(tbl_Subsidio subsidio) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateSubsidio(tbl_Subsidio subsidio) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteSubsidio(long idSubsidio) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean selectSubsidio(long idSubsidio) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectAllSubsidios() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * 
	 * ESTRATOS:INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertEstrato(tbl_Estrato estrato) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateEstrato(tbl_Estrato estrato) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteEstrato(long idEstrato) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean selectEstrato(long idEstrato) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectAllEstratos() {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * 
	 * CAUSA DE NO LECTURA:INSERT,UPDATE,DELET,SELECT
	 * 
	 */

	@Override
	public boolean insertCausaNoLectura(tbl_Causa_no_lectura no_lectura) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean upDateCausaNoLectura(tbl_Causa_no_lectura no_lectura) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteCausaNoLectura(long idCausaNoLectura) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Long> selectAllCausaNoLecturas() {
		// TODO Auto-generated method stub
		return null;
	}

}
